package org.tinygroup.parsedsql.parser;

import org.tinygroup.context.Context;
import org.tinygroup.parsedsql.SQLBuilder;
import org.tinygroup.parsedsql.base.DatabaseType;

/**
 * SQL解析基础访问器接口.
 * 
 * @author renhui
 */
public interface SQLVisitor {
    
    /**
     * 获取数据库类型.
     * 
     * @return 数据库类型
     */
    DatabaseType getDatabaseType();
    
    /**
     * 获取上下文对象.
     * 
     * @return 上下文对象
     */
    Context getContext();
    
    void setContext(Context context);
    
    /**
     * 获取SQL构建器.
     * 
     * @return SQL构建器
     */
    SQLBuilder getSQLBuilder();
    
    /**
     * 打印替换标记.
     * 
     * @param token 替换标记
     */
    void printToken(String token);
    
    /**
     * 打印替换标记.
     *
     * @param label 标签
     * @param token 替换标记
     */
    void printToken(String label, String token);
}